1. The Field of the Invention
The invention relates to maintaining data coherency in computing systems and networks generally. Specifically, the invention relates to maintaining data coherency among redundant RAID controllers.
2. The Relevant Art
Data is often stored remotely and accessed by multiple computers and other electronic devices on electronic networks. Within a single computing device, multiple subsystems may access a common segment of data. A well-known technique to lower access latency and increase transfers rates is to locally store or xe2x80x9ccachexe2x80x9d frequently accessed data within fast local memory thus reducing the load on relatively slow transmission channels, links, and storage devices. Caching facilitates faster access speeds by temporarily storing the data of interest on the local system or device.
Caching often results in data records and files, or portions thereof, being distributed in disparate locations. Updating cached data records and files properly is problematic and is known in the art as maintaining cache coherency. Maintaining cache coherency typically involves tracking and monitoring of the various cached versions in a central register or database and sending update messages to update old data at the various disparate locations. Tracking, monitoring and updating is expensive in that considerable processing cycles and/or specialized circuitry is required to maintain cache coherency.
RAID systems (i.e. systems using Redundant Arrays of Independent Disks) are used to store large quantities of data within computer and storage networks. RAID systems are designed to be fault resistant and fault tolerant by distributing data among redundant arrays of independent disks usually with some form of error coding. RAID controllers are typically required to receive write requests and write data from a host, acknowledge reception, encode the data, and send it to a disk array for storage. To prevent a weak link within RAID systems, RAID controllers often operate in a dual active configuration where the controllers are paired in order to take over for each other in the event that one of the controllers fails.
Mirroring is a specific form of caching that is often conducted to maintain redundant copies and thereby facilitate recovering from system errors and failures. Mirroring is particularly desirable in active standby RAID controllers in that a standby controller must have a copy of certain segments of a failed controller""s data to successfully recover from a failure and ensure that all write requests are successfully completed.
Mirroring is generally an expensive and time consuming operation. Mirroring requires that update messages must be generated, received, and processed for every data element that is updated within a cache. The time needed to generate, receive, and process update messages increases a RAID system""s vulnerability to unrecoverable errors. Furthermore, certain data segments are not needed to recover from errors resulting in needless copying. What is needed is low-cost high-speed apparatus and method for selectively mirroring cached data. Such an apparatus and method is particularly needed in redundant RAID controllers.
The apparatus of the present invention has been developed in response to the present state of the art, and in particular, in response to the problems and needs in the art that have not yet been fully solved by currently available data mirroring systems. Accordingly, it is an overall object of the present invention to provide an improved apparatus and method for mirroring cached data that overcomes many or all of the above-discussed shortcomings in the art.
To achieve the foregoing object, and in accordance with the invention as embodied and broadly described herein in the preferred embodiments, an improved apparatus and corresponding method for mirroring cached data is provided. In preferred embodiments, the described apparatus includes a mirror table and a mirror link.
The mirror table preferably comprises a CAM (content addressable memory) and a RAM (random access memory). The CAM stores a segment address for those local memory segments that are selected to be mirrored. The RAM stores the address of remote memory segments that correspond to the mirrored local memory segments, along with additional data such as a segment descriptor. The corresponding segment addresses within the CAM and the RAM are stored at corresponding addresses within each memory.
In operation, the CAM receives a segment address and returns the index of the mirrored segment address along with a segment hit signal indicating that the segment is a mirrored segment. The segment hit signal is not activated for segment addresses that are not within the CAM. The index returned by the CAM is used to access the address of the corresponding remote memory segments stored within the RAM.
The mirror table effectively partitions memory into segments and maps the address of selected segments within a local memory to the address of mirrored segments within remote memories. The mirror table is selectively engaged in that only those segments that are selected as mirrored segments are mapped to remote memory segments. The size of the mapped segments is also selectable and need not be the same on the local and remote systems.
The mirror link receives the remote addresses along with the corresponding data as well as the additional data such as a segment descriptor and transmits the received elements to the remote destination. Upon reception at the remote destination, the indicated remote address is updated with the corresponding data, thus maintaining data coherency between the selected local and remote memory segments. The additional data received by the remote destination may be used in a manner that is useful to the system in which it is deployed. For example, the additional data may be used to conduct messaging, transfer control information, perform housekeeping, or the like.
The described invention, may be used within dual active RAID controllers to provide reliable, low-cost, and high-speed means to mirror data packets sent to one of a plurality of controllers for storage within the redundant array of independent disks. The mirroring of data facilitates reliable completion of write requests in the event of a controller failure. The resulting invention may also be applied to other systems where selective data coherency is desired.
These and other objects, features, and advantages of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as set forth hereinafter.